package com.itheima02;

/**
 * @author Xiao
 * @date 2021/7/11
 */
public class ObjectDemo {
    /**
     * API_Object   toString()
     */
    public static void main(String[] args) {
        Student stu = new Student("阿良", 24);
        System.out.println(stu);    //com.itheima02.Student@12bc6874
        //看方法的源码：选中方法，按下Ctrl + B
        System.out.println(stu.toString());
        //API查Object类的toString方法：建议所有子类重写该方法
        //自动重写：alt+insert → toString() → ctrl + a → enter
        //打印结果：com.itheima02.Student@12bc6874（重写前）
        //打印结果：Student{name='阿良', age=24}（重写后）
        //  查看println源码
        /*
        public void println(Object x) {     //x = s
            String s = String.valueOf(x);
            synchronized (this) {
                print(s);
                newLine();
            }
        }
         */
        //  查看String.valueOf源码
        /*
        public static String valueOf(Object obj) {      obj = x
            return (obj == null) ? "null" : obj.toString();     //三元运算符，x！=null，调用toString方法
        }
         */
        //  查看toString源码
        /*
        public String toString() {
                return getClass().getName() + "@" + Integer.toHexString(hashCode());
            }
            getClass().getName()：类的全路径名
            "@"：拼接符号
            Integer.toHexString(hashCode())：12bc6874
         */
        //虽然学生类没有toString方法，但是默认继承了Object类的方法
        System.out.println(stu.toString());
        //API查Object类的toString方法：建议所有子类重写该方法
        //自动重写：alt+insert → toString() → ctrl + a → enter
        //打印结果：com.itheima02.Student@12bc6874（重写前）
        //打印结果：Student{name='阿良', age=24}（重写后）
    }
}
